﻿using QCCM2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;




namespace WCF_QCCM
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IQCAService" in both code and config file together.
    [ServiceContract]
    public interface IQCAService
    {
   
        //ATTRIBUTES
        [OperationContract]
        List<QCAttrib> GetAttribs();

        [OperationContract]
        string AddQCAttrib(string Name, string TypeOfData, string Desc, bool Disabled);

        [OperationContract]
        string UpdateQCAttrib(string Name, string TypeOfData, string Desc, bool Disabled);

        [OperationContract]
        string DeleteQCAttrib(string Name);

        [OperationContract]
        QCAttrib SearchQCAttrib(string Name);
        

        //MATERIAL

        [OperationContract]
        IEnumerable<Material> GetAllMaterials();

        [OperationContract]
        string AddMaterial(string MaterialName, string MaterialDescription, bool MaterialDisabled);

        [OperationContract]
        string UpdateMaterial(string MaterialName, string MaterialDescription, bool MaterialDisabled);

        [OperationContract]
        string DeleteMaterial(string MaterialName);


        //MATERIAL ATTRIBUTE

        [OperationContract]
        List<MaterialQCAttrib> GetAllMaterialQCAttrib();

        [OperationContract]
        bool AddMaterialQCA(MaterialQCAttrib obj);

        [OperationContract]
        bool UpdateMaterialQCA(MaterialQCAttrib obj);

        [OperationContract]
        bool DeleteMaterialQCAttrib(MaterialQCAttrib obj);

        
        //QCSCHEDULE.cs
        [OperationContract]
        List<QCSchedule> GetAllQCSchedules();

        [OperationContract]
        string AddQCSchedule(int materialID, int qcAttribID, string hour, string day, int groupID, bool qcScheduleDisabled);

        [OperationContract]
        string UpdateQCSchedule(int materialID, int qcAttribID, string hour, string day, int groupID, bool qcScheduleDisabled);

        [OperationContract]
        string DeleteQCSchedule(int materialID, int qcAttribID, int groupID);

        //[OperationContract]
        //string DisplayMaterialQCA(string Name, string Description, bool Disabled);


    }
}
